package twelfth.RandomAccessFile类;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

// 读取的时候直接使用“r"的模式即可。以只读的方式打开文件
public class 使用RandomAccessFile类读取数据 {
    public static void main(String[] args) throws IOException {
        // 指定要操作的文件
        String path = "D:" + File.separator + "WorkSpaces" + File.separator +
                "JavaDevelopBase_start_329" + File.separator + "src" + File.separator +
                "twelfth" + File.separator + "randomAccess.txt";// 指定要操作的文件
        File file = new File(path);
        RandomAccessFile rdf = new RandomAccessFile(file, "r");
        String name = null;
        int age = 0;
        byte b[] = new byte[8];// 准备空间读取姓名
        rdf.skipBytes(12);
        // 循环读取前8个内容
        for (int i = 0; i < b.length; i++) {
            b[i] = rdf.readByte();
        }
        // 将读取出来的字节数组变成String
        name = new String(b);
        // 读取数字
        age = rdf.readInt();
        System.out.println("第二个人信息：--> 姓名：" + name + "，年龄：" + age);
        rdf.seek(0);    // 指针回到文件的开头

        b = new byte[8];// 准备空间读取姓名
        // 循环读取前8个内容
        for (int i = 0; i < b.length; i++) {
            b[i] = rdf.readByte();
        }
        // 将读取出来的字节数组变成String
        name = new String(b);
        // 读取数字
        age = rdf.readInt();
        System.out.println("第一个人信息：--> 姓名：" + name + "，年龄：" + age);
        rdf.skipBytes(12);//跳过第一个人信息
        b = new byte[8];//准备空间读取姓名
        for (int i = 0; i <b.length ; i++) {
            b[i]=rdf.readByte();//循环读出前8个内瓤
        }
        name=new String(b);
        age = rdf.readInt();
        System.out.println("第三个人信息：--> 姓名：" + name + "，年龄：" + age);
        rdf.close();//关闭文件
    }
}
/**
 * 从上面的程序可以看出，程序中可以随机跳过12位读取信息，也可以回到开始点重新读取
 * 随机读写六可以实现对文件内容的操作，但是过于复杂，所以一般情况下操作文件内容往往会使用字节或者字符流
 */
/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=63169:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 twelfth.RandomAccessFile类.使用RandomAccessFile类读取数据
第二个人信息：--> 姓名：lisi    ，年龄：44
第一个人信息：--> 姓名：zhangsan，年龄：19
第三个人信息：--> 姓名：wangwu  ，年龄：88

Process finished with exit code 0

 */